package com.sky.task;

import com.sky.entity.Orders;
import com.sky.mapper.OrderMapper;
import com.sky.service.OrderService;
import com.sky.service.UserOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;

/*
* 定时处理超时订单
* */
@Component
@Slf4j
public class OrderTask {

    @Autowired
    private OrderMapper orderMapper;

    /*
    * 处理未支付的超时订单
    * */
    //每分钟的第0秒执行任务
//    @Scheduled(cron = "0 * * * * *")
//    public void tryToUpdateOverTimeOrders(){
//        log.info("开始处理超时订单：");
//        //当前时间
//        LocalDateTime now = LocalDateTime.now();
//        //超时时间（假设订单5分钟未支付就算超时） -5 min
//        LocalDateTime time = now.minusMinutes(5);
//
//        //从数据库中查找当前还是待支付状态的但是已经超时的订单并且将订单状态设置为超时
//        int number = orderMapper.updateOverTimeOrders(time);
//        log.info("{}个订单被处理",number);
//    }

    /*
    * 处理已经收到货但是管理端未点击已完成的订单
    * */
    //每天凌晨一点处理一次
    @Scheduled(cron = "* * 1 * * *")
    public void tryToUpdateDeliveringOrders(){
        //处理已经收到货但是管理端未点击已完成的订单
        log.info("开始处理还在派送中的订单：");

        //从数据库中查找已经收到货但是管理端未点击已完成的订单
        int number = orderMapper.updateDeliveringOrders();
        log.info("{}个订单被处理",number);

    }


}
